package com.tarena.lbs.user.service.impl;

import com.alibaba.nacos.common.utils.CollectionUtils;
import com.github.pagehelper.PageInfo;
import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.user.dao.repository.UserGroupRepository;
import com.tarena.lbs.user.pojo.param.UserGroupParam;
import com.tarena.lbs.user.pojo.po.UserGroupPO;
import com.tarena.lbs.user.pojo.query.UserGroupQuery;
import com.tarena.lbs.user.pojo.vo.UserGroupVO;
import com.tarena.lbs.user.service.UserGroupService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user;

@Slf4j
@Service
public class UserGroupServiceImpl implements UserGroupService {
    @Autowired
    private UserGroupRepository userGroupRepository;


    @Override
    public PageResult<UserGroupVO> pageList(UserGroupQuery userGroupQuery) {
        log.debug("查询人群数据业务参数：{}",userGroupQuery);
        PageResult<UserGroupVO> pageResult = new PageResult<>();
        PageInfo<UserGroupPO> pageInfo = userGroupRepository.pagesList(userGroupQuery);
        pageResult.setPageNo(pageInfo.getPageNum());
        pageResult.setPageSize(pageInfo.getPageSize());
        pageResult.setTotal(pageInfo.getTotal());
        List<UserGroupVO> vos = null;
        List<UserGroupPO> pos = pageInfo.getList();
        if (CollectionUtils.isNotEmpty(pos)) {
            vos = pos.stream().map(po -> {
                UserGroupVO vo = new UserGroupVO();
                BeanUtils.copyProperties(po, vo);
                if (po.getCreateAt() != null) {
                    vo.setCreateAt(po.getCreateAt().toInstant()
                            .atZone(java.time.ZoneId.systemDefault())
                            .toLocalDateTime());
                }
                return vo;
            }).collect(Collectors.toList());
        }
        pageResult.setObjects(vos);
        log.debug("查询人群数据业务返回：{}",pageResult.getObjects());
        return pageResult;
    }
    @Override
    public void saveUserGroup(UserGroupParam param) {
        log.debug("保存人群数据业务参数：{}",param);
        UserGroupPO userGroupPO = new UserGroupPO();
        BeanUtils.copyProperties(param,userGroupPO);
        if(userGroupPO.getId()==null){//新增
            userGroupPO.setCreateAt(new Date());
        }else{//编辑
            log.debug("编辑人群数据业务参数：{}",userGroupPO);
//            userGroupRepository.update(user);
        }
        userGroupRepository.saveUserGroup(userGroupPO);
    }
    @Override
    public void deleteUserGroup(Integer id) {
        log.debug("删除人群数据业务参数：{}",id);
        userGroupRepository.deleteUserGroup(id);
    }
}
